package com.leigq.www.common.enumeration;

import com.leigq.www.common.constant.QueueConstant;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 队列枚举
 * @author leiguoqing
 */
@AllArgsConstructor
@Getter
public enum QueueEnum {

    /**
     * 方式一普通的队列
     * <br/>
     * 利用TTL DLX实现延时队列的方式使用
     */
    NORMAL_QUEUE1(QueueConstant.NORMAL_QUEUE1_NAME, QueueConstant.NORMAL_QUEUE1_EXCHANGE_NAME, QueueConstant.NORMAL_QUEUE1_ROUTING_KEY),

    /**
     * 方式一普通队列延时后的消费队列（实际消费队列）
     * <br/>
     * 利用TTL DLX实现延时队列的方式使用
     */
    DELAY_DLX_QUEUE1(QueueConstant.DELAY_DLX_QUEUE1_NAME, QueueConstant.DELAY_DLX_QUEUE1_EXCHANGE_NAME, QueueConstant.DELAY_DLX_QUEUE1_ROUTING_KEY),

    /**
     * 方式二延时队列
     * <br/>
     * 利用Rabbitmq的插件x-delay-message实现
     */
    DELAY_QUEUE2(QueueConstant.DELAY_QUEUE2_NAME, QueueConstant.DELAY_QUEUE2_EXCHANGE_NAME, QueueConstant.DELAY_QUEUE2_ROUTING_KEY),

    /**
     * 错误消息的队列
     */
    ERROR_QUEUE(QueueConstant.ERROR_QUEUE_NAME, QueueConstant.ERROR_QUEUE_EXCHANGE_NAME, QueueConstant.ERROR_QUEUE_ROUTING_KEY),

    ;

    /**
     * The Queue name.
     */
    private final String queueName;

    /**
     * The Exchange name.
     */
    private final String exchangeName;

    /**
     * The Routing key.
     */
    private final String routingKey;

}
